package com.example.logaspect.annotation;

import java.lang.annotation.*;

/**
 * 日志记录注解，用于标记需要记录日志的方法
 * @author Senhai Xu
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface LogRecord {
    /**
     * 日志描述信息
     */
    String description() default "";

    /**
     * 是否记录入参
     */
    boolean recordParams() default true;

    /**
     * 是否记录返回值
     */
    boolean recordResult() default true;

    /**
     * 是否记录执行时间
     */
    boolean recordExecutionTime() default true;

    /**
     * 日志级别
     */
    LogLevel level() default LogLevel.INFO;

    /**
     * 日志级别枚举
     */
    enum LogLevel {
        INFO, WARN, ERROR
    }
}